#define _CRT_SECURE_NO_WARNINGS 1
#pragma warning(disable:6031)

#include <iostream>
using namespace std;

//class A
//{
//
//public:
//
//  A() :m_iVal(0) { test(); }
//
//  virtual void func() { std::cout << m_iVal << " "; }
//
//  void test() { func(); }
//
//public:
//
//  int m_iVal;
//
//};
//
//
//
//class B : public A
//
//{
//
//public:
//
//    B() {
//        test();
//    }
//
//    virtual void func()
//
//    {
//        
//        ++m_iVal;
//
//        std::cout << m_iVal << " ";
//
//    }
//
//};

class A

{

public:

    virtual void f()

    {

        cout << "A::f()" << endl;

    }

};



class B : public A

{

private:

    virtual void f()

    {

        cout << "B::f()" << endl;

    }

};





int main(int argc, char* argv[])

{

    A* pa = (A*)new B;

    pa->f();


    return 0;

}